sessions.tsx 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { PermissionAction } from '@supabase/shared-types/out/constants'
  2. import { PageContainer } from 'ui-patterns/PageContainer'
  3. import {
  4. PageHeader,
  5. PageHeaderDescription,
  6. PageHeaderMeta,
  7. PageHeaderSummary,
  8. PageHeaderTitle,
  9. } from 'ui-patterns/PageHeader'
  10. import { PageSection, PageSectionContent } from 'ui-patterns/PageSection'
  11. import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader'
  12. import { SessionsAuthSettingsForm } from '@/components/interfaces/Auth/SessionsAuthSettingsForm/SessionsAuthSettingsForm'
  13. import AuthLayout from '@/components/layouts/AuthLayout/AuthLayout'
  14. import DefaultLayout from '@/components/layouts/DefaultLayout'
  15. import NoPermission from '@/components/ui/NoPermission'
  16. import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
  17. import type { NextPageWithLayout } from '@/types'
  18. const SessionsPage: NextPageWithLayout = () => {
  19. const { can: canReadAuthSettings, isSuccess: isPermissionsLoaded } = useAsyncCheckPermissions(
  20. PermissionAction.READ,
  21. 'custom_config_gotrue'
  22. )
  23. if (isPermissionsLoaded && !canReadAuthSettings) {
  24. return <NoPermission isFullPage resourceText="access your project's authentication settings" />
  25. }
  26. return (
  27. <>
  28. <PageHeader size="default">
  29. <PageHeaderMeta>
  30. <PageHeaderSummary>
  31. <PageHeaderTitle>User Sessions</PageHeaderTitle>
  32. <PageHeaderDescription>
  33. Configure settings for user sessions and refresh tokens
  34. </PageHeaderDescription>
  35. </PageHeaderSummary>
  36. </PageHeaderMeta>
  37. </PageHeader>
  38. <PageContainer size="default">
  39. {!isPermissionsLoaded ? (
  40. <PageSection>
  41. <PageSectionContent>
  42. <GenericSkeletonLoader />
  43. </PageSectionContent>
  44. </PageSection>
  45. ) : (
  46. <SessionsAuthSettingsForm />
  47. )}
  48. </PageContainer>
  49. </>
  50. )
  51. }
  52. SessionsPage.getLayout = (page) => (
  53. <DefaultLayout>
  54. <AuthLayout title="Sessions">{page}</AuthLayout>
  55. </DefaultLayout>
  56. )
  57. export default SessionsPage